﻿// 弹球模拟 PINBALL.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

/*
https://algospot.com/judge/problem/read/PINBALL

问题
pinball1.png

东赫正在玩新出的弹球游戏。这个弹球游戏在一个非常大的游戏板上放置了多个障碍物，目标是从外部投掷球并击中尽可能多的障碍物。球和障碍物都是完整的圆形，当球撞击到障碍物时，入射角和反射角始终相等。由于障碍物固定在游戏板上，它们不会移动。上图展示了在示例游戏板上，东赫投掷的球按顺序碰撞到障碍物的过程。

请编写一个程序，给定障碍物的位置和大小以及球的位置和方向，计算球与哪些障碍物发生碰撞。球是半径为1的圆，假设它总是沿直线运动。

输入
输入的第一行包含测试用例的数量C（C <= 50）。每个测试用例的第一行包含5个整数x，y，dx，dy，N。其中x，y（0 <= x，y <= 100）表示球当前中心的位置，dx，dy（-10 <= dx，dy <= 10）表示球的方向。球从当前位置（x，y）朝着（x+dx，y+dy）的方向以直线滚动。N（0 <= N <= 50）表示障碍物的数量，并且每个障碍物都被分配一个从0到N-1的编号。接下来的N行依次给出了每个障碍物的信息，包括3个整数x_i，y_i，r_i（0 <= x_i，y_i，r_i <= 100）。其中第i个障碍物是以（x_i，y_i）为中心，半径为r_i的圆形。

障碍物可能横跨游戏板的边界。不存在两个障碍物之间的距离小于等于2的情况。球在起始位置上不会与障碍物重叠或接触。

假设当球撞击游戏板的墙壁时会掉落。输入中不会同时给出球同时碰到游戏板的墙壁和障碍物的情况。

输出
对于每个测试用例，按照碰撞顺序依次输出每个障碍物的编号。如果球与障碍物发生超过100次碰撞，则只输出前100次碰撞的障碍物编号。

即使在给定输入中障碍物的大小或位置变化了10^-7，也可以假设答案不会改变。

示例输入
1
5 5 1 1 5
22 40 12
61 26 20
19 78 21
51 86 7
84 57 15
示例输出
0 1 2 1 2 0 3 4
*/
int main()
{
    std::cout << "Hello World!\n";
}

 